#include "gl_def.h"
#include "camera_dynamic_server.h"
#include "camera_events_server.h"
#include "camera_param_init.h"
#include "camera_demand_callback.h"

// 图片抓拍回调函数
static void *manualCapturePicture(void *inArg, void *outArg,void *usrArg) {
    printf("===get %s command===\n", __FUNCTION__);
    // 获取收到的命令
    camera_manualCapturePicture_inparam *inparam = (camera_manualCapturePicture_inparam*)inArg;
    camera_manualCapturePicture_outparam *outparam = (camera_manualCapturePicture_outparam*)outArg;

    printf("channelNumber = %d\n", inparam->channelNumber);
    printf("channelId = %s\n", inparam->channelId);
    printf("presetPosition = %d\n", inparam->presetPosition);
    printf("taskExecuteId = %s\n", inparam->taskExecuteId);

    outparam->result.rltCode = 200;
    strcpy(outparam->result.retMsg, "");
    
    return NULL;
}

// 录制短视频回调函数
static void *manualRecodeVideo(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 远程控制摄像机回调函数
static void *remoteContrl(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 启动视频传输回调函数
static void *startVideoTransmission(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 停止视频传输回调函数
static void *stopVideoTransmission(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 请求播放录像文件回调函数
static void *startRecordVideo(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 播放录像文件控制回调函数
static void *controlRecordVideo(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 播放录像文件控制回调函数
static void *stopRecordVideo(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 开始语音广播回调函数
static void *startVoiceBroadcast(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 停止语音广播回调函数
static void *stopVoiceBroadcast(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}


static void *getcameraParam_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *setcameraParam_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *getcaptureTimesTask_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *setcaptureTimesTask_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 请求播放录像文件回调函数
static void *startDownloadRecordVideo_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

// 播放录像文件控制回调函数
static void *stopDownloadRecordVideo_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getAIAnalysisConfig_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *setAIAnalysisConfig_test(void *inArg, void *outArg,void *usrArg) {
    // 获取收到的命令
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *getAILinkageParamConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *setAILinkageParamConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *getVedioEncodeParamsConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *setVedioEncodeParamsConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}


static void *getPowermanageConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    
    return NULL;
}

static void *setPowermanageConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    
    return NULL;
}


static void *getOSDConfigParameters_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    
    return NULL;
}

static void *setOSDConfigParameters_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    
    return NULL;
}


static void *getRecordInfo_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getRecordStrategy_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *setRecordStrategy_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}


static void *manualTempMeasurement_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getCruiseConfigParameter_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *setCruiseConfigParameters_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}


static void *setLinepaptrolConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getLinepaptrolConfigParameter_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    
    return NULL;
}



static void *setLinepaptrolStrategy_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getLinepaptrolStrategyParameter_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    
    return NULL;
}


static void *getRecordFileCount_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}


static void *getRecordFileList_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}


static void *getPresetInfo_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}



static void *setCameraImageCollectionParameters_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}


static void *getPtCloudConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
   
    return NULL;
}

static void *setPtCloudConfig_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getIRBasicParameter_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *setIRBasicParameter_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *getIRDataCollectionParam_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);

    return NULL;
}

static void *setIRDataCollectionParam_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}


static void *getAIAnalysisType_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *manaulTempMeasurement_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

static void *setCameraGB28181Param_test(void *inArg, void *outArg,void *usrArg){
    printf("===get %s command===\n", __FUNCTION__);
    return NULL;
}

int camera_features_server_init_test() {
    // 图像视频初始化
    StartTesting("图像视频初始化");
    camera_cameraDeviceBasicInfo info = {0};
    info.channelCount = 2;
    camera_childChannelInfo cinfo[2] = {0};
    info.childChannelInfo = cinfo;
    cinfo->channelNumber = 1;
    cinfo->ptzSupport = 1;
    cinfo[1].channelNumber =2;
    int ret = phyModel_camera_paramInit(&info);
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }
    EndTesting("图像视频初始化");

    // 注册回调函数

    IOT_comm_demand_funcCallback paramCallbcak;
    StartTesting("图像视频注册回调函数");
    paramCallbcak.funcCallback = manualCapturePicture;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_MUNUALCAPTUREIMAGE, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = manualRecodeVideo;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_MUNUALRECORDVIDEO, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = remoteContrl;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_REMOTECONTROL, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = startVideoTransmission;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_STARTVIDEOTRANSMISSION, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = stopVideoTransmission;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_STOPVIDEOTRANSMISSION, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = getcaptureTimesTask_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETCAPTURETIMETASKINFOMATION, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = setcaptureTimesTask_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETCAPTURETIMETASKINFOMATION, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = getAIAnalysisConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETAIANALYSISCONFIG, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = setAIAnalysisConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETAIANALYSISCONFIG, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }
    //getAILinkageParamConfig_test
    paramCallbcak.funcCallback = getAILinkageParamConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETAILINKAGEPARAMCONFIG, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setAILinkageParamConfig_test
    paramCallbcak.funcCallback = setAILinkageParamConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETAILINKAGEPARAMCONFIG, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getVedioEncodeParamsConfig_test
    paramCallbcak.funcCallback = getVedioEncodeParamsConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETVEDIOENCODEPARAMSCONFIG, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    paramCallbcak.funcCallback = setVedioEncodeParamsConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETVEDIOENCODEPARAMSCONFIG, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }


    //getOSDConfigParameters_test
    paramCallbcak.funcCallback = getOSDConfigParameters_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETOSDCONFIGPARAMETERS, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setOSDConfigParameters_test
    paramCallbcak.funcCallback = setOSDConfigParameters_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETOSDCONFIGPARAMETERS, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getRecordInfo_test
    paramCallbcak.funcCallback = getRecordInfo_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETRECORDSTATE, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getRecordStrategy_test
    paramCallbcak.funcCallback = getRecordStrategy_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETRECORDSTRATEGY, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setRecordStrategy_test
    paramCallbcak.funcCallback = setRecordStrategy_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETRECORDSTRATEGY, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getCruiseConfigParameter_test
    paramCallbcak.funcCallback = getCruiseConfigParameter_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETCRUISECONFIGPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setCruiseConfigParameters_test
    paramCallbcak.funcCallback = setCruiseConfigParameters_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETCRUISECONFIGPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setLinepaptrolConfig_test
    paramCallbcak.funcCallback = setLinepaptrolConfig_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETLINEPAPTROLCONFIGPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getLinepaptrolConfigParameter_test
    paramCallbcak.funcCallback = getLinepaptrolConfigParameter_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETLINEPAPTROLCONFIGPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setLinepaptrolStrategy_test
    paramCallbcak.funcCallback = setLinepaptrolStrategy_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETLINEPAPTROLSTRATEGYPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getLinepaptrolStrategyParameter_test
    paramCallbcak.funcCallback = getLinepaptrolStrategyParameter_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETLINEPAPTROLSTRATEGYPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getRecordFileList_test
    paramCallbcak.funcCallback = getRecordFileList_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETRECORDFILELIST, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getPresetInfo_test
    paramCallbcak.funcCallback = getPresetInfo_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETPRESETINFO, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }


    //getIRBasicParameter_test
    paramCallbcak.funcCallback = getIRBasicParameter_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETIRBASICPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setIRBasicParameter_test
    paramCallbcak.funcCallback = setIRBasicParameter_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETIRBASICPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //getIRDataCollectionParam_test
    paramCallbcak.funcCallback = getIRDataCollectionParam_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_GETIRPARAMTERPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    //setIRDataCollectionParam_test
    paramCallbcak.funcCallback = setIRDataCollectionParam_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETIRPARAMTERPARAMTER, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }


    //setCameraGB28181Param_test
    paramCallbcak.funcCallback = setCameraGB28181Param_test;
    paramCallbcak.usrArg = NULL;
    ret = camera_demand_callbackFunc_register(CAMERA_DEMAND_CALLBACK_SETDEVICEPLATFORMINFO, &paramCallbcak); 
    if (ret != IOTC_success) { 
        IOT_errorInfoRecord(ret,__FILE__,__LINE__); 
        return -1; 
    }

    EndTesting("图像视频注册回调函数");

    return 0;
}


int camera_features_server_test() {
    int ret;
   
    // 上报通道状态
    StartTesting("上送通道状态");
    camera_cameraDeviceBasicInfo basic_info = {0};
    strcpy(basic_info.mainId, "mainId");
    basic_info.channelCount = 2;
    camera_childChannelInfo channel_info[2];
    basic_info.childChannelInfo = &channel_info;
    for (int i=0;i<2;i++) {
        basic_info.childChannelInfo[i].channelNumber = i+1;
        basic_info.childChannelInfo[i].ptzSupport = 1;
        strcpy(basic_info.childChannelInfo[i].channelName, "channelName");
        strcpy(basic_info.childChannelInfo[i].channelId, "channelId");
        strcpy(basic_info.childChannelInfo[i].deviceModel, "01");
        strcpy(basic_info.childChannelInfo[i].macAddress, "macAddress");
        strcpy(basic_info.childChannelInfo[i].manufacture, "manufacture");
        strcpy(basic_info.childChannelInfo[i].softwareVersion, "softwareVersion");
    }
    ret = phyModel_camera_deviceChannelInfo_Upload(&basic_info);
    EndTesting("上送通道状态");

    return 0;
}
